package com.hn.project.rqinspect.mapper;

import com.hn.framework.web.dao.BaseMapper;
import com.hn.project.rqinspect.domain.database.TaskPushRecord;
import com.hn.project.rqinspect.domain.database.TaskRecord;
import com.hn.project.rqinspect.domain.dto.*;
import com.hn.project.rqinspect.domain.vo.TaskRecordVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface TaskRecordMapper extends BaseMapper<TaskRecord> {


    /**
     * 代办任务统计
     */
    Integer countTodoTask(@Param("taskIds") List<Integer> taskIds,
                          @Param("taskType") Integer taskType,
                          @Param("userId") Integer userId);

    /**
     * 代办任务列表
     */
    List<TaskRecordDto> listTodoTask(TaskRecordVo taskRecordVo);


    /**
     * 获取生成的任务
     */
    List<TaskRecord> listGenTaskRecord(@Param("taskIds")List<Integer> taskIds,
                                          @Param("userId")Integer userId);

    /**
     * 历史任务列表
     */
    List<TaskRecordHistoryDto> listHistoryTaskRecord(TaskRecordVo taskRecordVo);

    /**
     * 任务记录详情
     */
    TaskRecordDto getTaskRecord(Integer pushRecordId);

    TaskRecordHistoryDto getHistoryTaskRecord(Integer taskRecordId);

    /**
     * 生成推送记录
     *
     * @param list
     * @return
     */
    int genTaskPushRecord(List<TaskPushRecord> list);

    Integer countTaskNum(@Param("branchIds") List<Integer> branchIds,
                         @Param("taskId") Integer taskId,
                         @Param("status") Integer status);

    /**
     * 审核通过个数
     */
    int countAuditSuccessTask(@Param("branchIds") List<Integer> branchIds,@Param("taskType")Integer taskType);

    /**
     * 待审核个数
     */
    int countAuditTodoTask(@Param("branchIds")List<Integer> branchIds,@Param("taskType")Integer taskType);

    /**
     * 我的草稿列表
     */
    List<DraftTaskDto> listDraftTask(@Param("userId") Integer userId, @Param("taskType")Integer taskType);

    /**
     * 已完成任务统计
     */
    Integer countFinishTaskNumByUserId(@Param("userId") Integer userId,
                                 @Param("taskType") Integer taskType);

    /**
     * 草稿任务统计
     */
    Integer countDraftTaskNumByUserId(@Param("userId") Integer userId,
                                      @Param("taskType") Integer taskType);

    List<TaskRecordDto> listTaskRecord(TaskRecordVo taskRecordVo);

    Integer countFinishTaskNumByBranchIds(@Param("branchIds")List<Integer> branchIds,
                                          @Param("taskType") Integer taskType);
}
